from datetime import datetime
from flask import Flask, redirect, render_template, request, session


app = Flask(__name__)
app.secret_key = "randomstring12345"  # 大家可以不一样的，用于生成随机ID的随机种子，类似random的seed
messages = []


def add_messages(username, message):
    # 添加消息，保存在列表里面
    now = datetime.now().strftime("%H:%M:%S") # 记录时间：格式：00:00:00
    messages_dict = {"timestamp": now, "from": username, "message": message} # 之前是字符串，现在换成字典保存
    messages.append(messages_dict)

def get_all_messages():
    """获取关于我的所有聊天信息`"""
    return "<br>".join(messages)



@app.route("/", methods=["GET", "POST"])  # 允许的方法有POST和GET，其他不写methods默认就是GET
def index():
    """主页"""
    if request.method == "POST":
        # 如果是POST请求，进入这里，在请求中把username放到session里面
        session["username"] = request.form["username"]

    if "username" in session:
        # 如果session中有username这个键值，就转跳到对应的用户页面
        return redirect(session["username"])
    
    # 如果没有，就展示首页网页。
    return render_template("index2.html")


@app.route("/<username>", methods=["GET", "POST"])
def user(username):
    """个人聊天室"""
    if request.method == "POST":
        # 如果是提交聊天内容，则在这里处理
        username = session["username"]
        message = request.form["message"]
        add_messages(username, message)
        return redirect(session["username"])
    
    # 若不是，则显示所有聊天内容
    return render_template("chat3.html", username=username,
                           chat_messages=messages)

@app.route("/<username>/<message>")
def send_message(username, message):
    """
    通过路由设置:/人名称/信息内容 来实现发送信息给某人
    添加信息到列表里面，然后返回到用户页面
    """
    add_messages(username, message)
    return redirect("/" + username)

if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5001)